<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Style-Type" content="text/css">
  <script src='../bbs.js'></script>

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-120820034-1"></script>

  <link href="../bbs.css" type="text/css" rel="stylesheet">
  <link rel="shortcut icon" href="/favicon.ico">
  <title>WSHの引数の型 | サクラエディタ過去ログ</title>
</head>
<body>
<ul class="side">
        <a href="./" class="toindex">◀ANSI版開発トップへ</a>
        <li><div class="list-title">
    <span class="no">3454</span>
    <a class="thread-title" href="3454.html#3454">WSHの引数の型</a></div>
    <ul><li><div class="list-title">
    <span class="no">3455</span>
    <a class="thread-title" href="3454.html#3455">RE: WSHの引数の型</a></div>
    </li><li><div class="list-title">
    <span class="no">3482</span>
    <a class="thread-title" href="3454.html#3482">WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3487</span>
    <a class="thread-title" href="3454.html#3487">Re: WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3516</span>
    <a class="thread-title" href="3454.html#3516">Re: WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3570</span>
    <a class="thread-title" href="3454.html#3570">Re2: WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3573</span>
    <a class="thread-title" href="3454.html#3573">Re3: WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3589</span>
    <a class="thread-title" href="3454.html#3589">Re4: WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3591</span>
    <a class="thread-title" href="3454.html#3591">Re5: WSH</a></div>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li><li><div class="list-title">
    <span class="no">3532</span>
    <a class="thread-title" href="3454.html#3532">RE: WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3533</span>
    <a class="thread-title" href="3454.html#3533">RE2: WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3534</span>
    <a class="thread-title" href="3454.html#3534">RE3: WSH</a></div>
    </li></ul></li><li><div class="list-title">
    <span class="no">3535</span>
    <a class="thread-title" href="3454.html#3535">RE2: WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3536</span>
    <a class="thread-title" href="3454.html#3536">RE3: WSH</a></div>
    <ul><li><div class="list-title">
    <span class="no">3537</span>
    <a class="thread-title" href="3454.html#3537">RE4: WSH 拡張子</a></div>
    </li></ul></li><li><div class="list-title">
    <span class="no">3924</span>
    <a class="thread-title" href="3454.html#3924">RE3: WSH</a></div>
    </li></ul></li></ul></li></ul></li></ul></li>
    </ul><ul class="main"><li><section><h1 id=3454>
    <span class="no">[3454]</span>
    <a class="thread-title" href="#3454">WSHの引数の型</a>
    <span class="author">みく</span>
    <time datetime="2004-03-03T20:54:40">2004年03月03日 20:54</time></h1>
    <div class="body"><br>引数の取り出しに、定義どおりに VT_I4 とかチェックしてますが、<br><br>Dim a 'As Long<br>a = 1<br>Editor.XXX(a)  'VT_BYREF|VT_VARIANT → VT_I4<br>'Editor.XXX(1)  'VT_I4 ?<br><br>のような場合には、<br><br>VT_BYREF|VT_VARIANT → VT_I4<br>（VBスクリプトでは Dim a As Long のように型を定義できないので Variant になる）<br><br>で渡されるので、引数の取り出し部分をもっと作りこむ必要があると思います。<br></div></section>
    <ul><li><section><h1 id=3455>
    <span class="no">[3455]</span>
    <a class="thread-title" href="#3455">RE: WSHの引数の型</a>
    <span class="author">みく</span>
    <time datetime="2004-03-03T21:05:29">2004年03月03日 21:05</time></h1>
    <div class="body"><br>//intを返すように努力する関数<br>bool ChallengeIntValue( VARIANTARG* varg, int* value ){<br>&#9;switch( varg-&gt;vt ){<br>&#9;case VT_UI1: *value = (int)varg-&gt;bVal; return true;<br>&#9;case VT_I2: *value = (int)varg-&gt;iVal; return true;<br>&#9;case VT_I4: *value = (int)varg-&gt;lVal; return true;<br>&#9;case VT_R4: *value = (int)varg-&gt;fltVal; return true;<br>&#9;case VT_R8: *value = (int)varg-&gt;dblVal; return true;<br>&#9;case VT_BOOL: *value = (int)varg-&gt;boolVal; return true;<br>&#9;case VT_BYREF|VT_UI1: *value = (int)(*(varg-&gt;pbVal)); return true;<br>&#9;case VT_BYREF|VT_I2: *value = (int)(*(varg-&gt;piVal)); return true;<br>&#9;case VT_BYREF|VT_I4: *value = (int)(*(varg-&gt;plVal)); return true;<br>&#9;case VT_BYREF|VT_R4: *value = (int)(*(varg-&gt;pfltVal)); return true;<br>&#9;case VT_BYREF|VT_R8: *value = (int)(*(varg-&gt;pdblVal)); return true;<br>&#9;case VT_BYREF|VT_BOOL: *value = (int)(*(varg-&gt;pboolVal); return true;<br>&#9;case VT_BYREF|VT_VARIANT: return ChallengeIntValue( varg-&gt;pvarVal, value );  //再帰呼び出し<br>&#9;case VT_I1: *value = (int)varg-&gt;cVal; return true;<br>&#9;case VT_UI2: *value = (int)varg-&gt;uiVal; return true;<br>&#9;case VT_UI4: *value = (int)varg-&gt;ulVal; return true;<br>&#9;case VT_INT: *value = (int)varg-&gt;intVal; return true;<br>&#9;case VT_UINT: *value = (int)varg-&gt;uintVal; return true;<br>&#9;case VT_BYREF|VT_I1: *value = (int)(*(varg-&gt;pcVal)); return true;<br>&#9;case VT_BYREF|VT_UI2: *value = (int)(*(varg-&gt;puiVal)); return true;<br>&#9;case VT_BYREF|VT_UI4: *value = (int)(*(varg-&gt;pulVal)); return true;<br>&#9;case VT_BYREF|VT_INT: *value = (int)(*(varg-&gt;pintVal)); return true;<br>&#9;case VT_BYREF|VT_UINT: *value = (int)(*(varg-&gt;puintVal)); return true;<br>&#9;}<br>&#9;*value = 0;<br>&#9;return false;<br>}<br></div></section>
    </li><li><section><h1 id=3482>
    <span class="no">[3482]</span>
    <a class="thread-title" href="#3482">WSH</a>
    <span class="author">みく</span>
    <time datetime="2004-03-20T07:03:06">2004年03月20日 07:03</time></h1>
    <div class="body"><br>WSHでMsgBoxを使えるようにしてみました。<br><br>http://groups.yahoo.co.jp/group/sakura-editor/files/Developer/Source/wsh20040320.LZH<br></div></section>
    <ul><li><section><h1 id=3487>
    <span class="no">[3487]</span>
    <a class="thread-title" href="#3487">Re: WSH</a>
    <span class="author">げんた</span>
    <time datetime="2004-03-20T17:54:36">2004年03月20日 17:54</time></h1>
    <div class="body">wsh_readme.txtより<br>&gt;いつものようにデバッグはしておりません。<br>って...(汗<br></div></section>
    <ul><li><section><h1 id=3516>
    <span class="no">[3516]</span>
    <a class="thread-title" href="#3516">Re: WSH</a>
    <span class="author">もか</span>
    <time datetime="2004-04-01T21:45:27">2004年04月01日 21:45</time></h1>
    <div class="body">*引数の型<br>これ、現状ではVBSだけではなく、ActivePerlやActiveRubyでも引数が扱えていないようなので、かなり期待してます。<br><br>*MsgBoxが使える<br>スクリプティング エンジン(WSE)内蔵のウィンドウ表示系メソッド(でいいのか?)が使えるということですよね？<br>でもJScriptには、VBSのMsgBox/Inputに相当する物がないらしいので、結局使えないでしょうか。<br><br>*新WSHクラス群の実装について<br>Win9xで動きそうにないのは、意図した実装でしょうか<br>単に、まだ実装していないだけかもれないけど。<br><br>*WSHによるアウトライン解析<br>DLLよりアプリケーションエラーになりにくい、メモリー管理がかったるくない。コンパイルしなくいい。<br>正規表現をはじめとする、便利なWSE関数群がたぶん使える。<br>必然的にソース付きなので、(読める人には)セキュア。<br><br>デメリットは、WSHが動かないPCでは使えない。<br>その影響で現在内蔵しているアウトライン解析を追い出しにくい。<br>(DLLタイプでは、幾つかの解析ルーチンを本体から追い出そうと私個人は考えている)<br>と、デメリットはそんなになさそうですね。<br></div></section>
    <ul><li><section><h1 id=3570>
    <span class="no">[3570]</span>
    <a class="thread-title" href="#3570">Re2: WSH</a>
    <span class="author">みく</span>
    <time datetime="2004-05-06T19:54:20">2004年05月06日 19:54</time></h1>
    <div class="body"><br>&gt;Win9xで動きそうにないのは、意図した実装でしょうか<br><br>CreateFileWだけだと思うんですが、他にありますでしょうか。<br></div></section>
    <ul><li><section><h1 id=3573>
    <span class="no">[3573]</span>
    <a class="thread-title" href="#3573">Re3: WSH</a>
    <span class="author">もか</span>
    <time datetime="2004-05-06T23:06:28">2004年05月06日 23:06</time></h1>
    <div class="body">* Win9xで動かないらしい関数<br>RegOpenKeyExW<br>RegQueryValueExW<br>* その他<br>wcsicmp,_wcsicmp localeに依存するはずだが、MSDNには詳細はない模様。<br>_ありなし両方混ざってます。<br><br>&gt;* ただし、VC++7.0は1900年らしい。<br>VC++7.0(MS-C/C++13.0)でなく、MS-C/C++7.0のことのはずです。<br></div></section>
    <ul><li><section><h1 id=3589>
    <span class="no">[3589]</span>
    <a class="thread-title" href="#3589">Re4: WSH</a>
    <span class="author">みく</span>
    <time datetime="2004-05-26T18:40:14">2004年05月26日 18:40</time></h1>
    <div class="body">&gt;タイトル: Re4: WSH<br>&gt;発言者: もか<br>&gt;* Win9xで動かないらしい関数<br>&gt;RegOpenKeyExW<br>&gt;RegQueryValueExW<br>&gt;* その他<br>&gt;wcsicmp,_wcsicmp localeに依存するはずだが、MSDNには詳細はない模様。<br>&gt;_ありなし両方混ざってます。<br>&gt;<br>&gt;&gt;* ただし、VC++7.0は1900年らしい。<br>&gt;VC++7.0(MS-C/C++13.0)でなく、MS-C/C++7.0のことのはずです。<br><br>thanks.<br><br><br>WSHのソースですが、*.hにソースを記述するとinline扱いになるので、<br>いったん引き上げます。（実行ファイルが増加する原因）<br></div></section>
    <ul><li><section><h1 id=3591>
    <span class="no">[3591]</span>
    <a class="thread-title" href="#3591">Re5: WSH</a>
    <span class="author">みく</span>
    <time datetime="2004-05-26T19:10:56">2004年05月26日 19:10</time></h1>
    <div class="body"><br>&gt;*.hにソースを記述するとinline扱いになるので、<br><br>正確ではなかったので訂正:<br>クラス定義内に関数定義を記述するとinline扱い<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li><li><section><h1 id=3532>
    <span class="no">[3532]</span>
    <a class="thread-title" href="#3532">RE: WSH</a>
    <span class="author">みく</span>
    <time datetime="2004-04-15T21:59:23">2004年04月15日 21:59</time></h1>
    <div class="body"><br>CWSHMacroManager::Creator関数を以下のような感じにすると、<br>PerlScriptが動きます。<br><br>if( ReadRegistry( HKEY_CLASSES_ROOT, FileExtWithDotW, NULL, FileTypeW, sizeof( FileTypeW ) / sizeof( wchar_t ) ) )<br>{<br>&#9;wcscpy( FileTypeW_save, FileTypeW );&#9;//save<br><br>&#9;wchar_t* suffix[] = {<br>&#9;&#9;L"\\ScriptEngine",&#9;//for JScript, VBScript, RubyScript<br>&#9;&#9;L"ScriptFile\\ScriptEngine",&#9;//for PerlScript<br>&#9;&#9;NULL<br>&#9;};<br><br>&#9;for( int i = 0; suffix[i]; i++ ){<br>&#9;&#9;wcscpy( FileTypeW, FileTypeW_save );<br>&#9;&#9;wcscat( FileTypeW, suffix[i] );<br>&#9;&#9;if( ReadRegistry( HKEY_CLASSES_ROOT, FileTypeW, NULL, EngineNameW, sizeof( EngineNameW ) / sizeof( wchar_t ) ) )<br>&#9;&#9;{<br>&#9;&#9;&#9;Result = new wchar_t[ wcslen( EngineNameW ) + 1 ];<br>&#9;&#9;&#9;wcscpy( Result, EngineNameW );<br>&#9;&#9;&#9;break;<br>&#9;&#9;}<br>&#9;}<br>}<br></div></section>
    <ul><li><section><h1 id=3533>
    <span class="no">[3533]</span>
    <a class="thread-title" href="#3533">RE2: WSH</a>
    <span class="author">みく</span>
    <time datetime="2004-04-15T22:15:09">2004年04月15日 22:15</time></h1>
    <div class="body"><br>あぁ、でも PerlScript で WScript, CreateObject, ActiveXObject とかどうするんだろう。<br></div></section>
    <ul><li><section><h1 id=3534>
    <span class="no">[3534]</span>
    <a class="thread-title" href="#3534">RE3: WSH</a>
    <span class="author">みく</span>
    <time datetime="2004-04-15T22:30:40">2004年04月15日 22:30</time></h1>
    <div class="body"><br>PerlScript:<br>use Win32::OLE;<br>$WshShell = Win32::OLE-&gt;CreateObject("WScript.Shell");<br>$WshShell-&gt;Popup("message",undef,"title",1);<br><br>RubyScript:<br>shell = WIN32OLE.new("WScript.Shell")<br>shell.Popup "message", 0, "title", 1<br><br>JScript:<br>var WSHShell = new ActiveXObject("WScript.Shell");<br>WSHShell.Popup("message", 0, "title", 1);<br><br>VBScript:<br>'MsgBox "message"<br>set WSHShell = CreateObject("WScript.Shell")<br>WSHShell.Popup "message", 0, "title", 1<br><br>でOKでした。<br></div></section>
    </li></ul></li><li><section><h1 id=3535>
    <span class="no">[3535]</span>
    <a class="thread-title" href="#3535">RE2: WSH</a>
    <span class="author">みく</span>
    <time datetime="2004-04-17T08:36:30">2004年04月17日 08:36</time></h1>
    <div class="body"><br>Alpha(2004/03/20の記事) でも先のような探索方法をとっているようですが、<br>気になったので調べてみました。<br><br>レジストリを見てたらPerlScriptの拡張子は ".pl" ではなく ".pls" でした。<br>ちなみにPythonScriptの拡張子は ".py" ではなく ".pys" です。<br><br>.pl<br>&#9;@=Perl<br>.pls<br>&#9;@=PerlScriptFile<br>PerlScriptFile<br>&#9;ScriptEngine<br><br>.py<br>&#9;@=Python.File<br>.pys<br>&#9;@=pysFile<br>pysFile<br>&#9;ScriptEngine<br><br>".pl" は先の修正でいいとしても、<br>".py" でも動くようにするには結局ハードコーディングが必要な気がする。<br>未知のスクリプトでもOKなような探索方法ってないのかなぁ。<br><br>メモ：<br>".vbe", ".jse": それぞれ ".vbs", ".js" のエンコードされたスクリプト<br></div></section>
    <ul><li><section><h1 id=3536>
    <span class="no">[3536]</span>
    <a class="thread-title" href="#3536">RE3: WSH</a>
    <span class="author">げんた</span>
    <time datetime="2004-04-17T11:56:48">2004年04月17日 11:56</time></h1>
    <div class="body">&gt;レジストリを見てたらPerlScriptの拡張子は ".pl" ではなく ".pls" でした。<br>&gt;ちなみにPythonScriptの拡張子は ".py" ではなく ".pys" です。<br>あ，本当ですね．以前は.plxだった気がしたんですが，変わったのかな．<br>Winampをインストールすると.plsはWinamp PlayListになってしまう．困ったものだ．<br></div></section>
    <ul><li><section><h1 id=3537>
    <span class="no">[3537]</span>
    <a class="thread-title" href="#3537">RE4: WSH 拡張子</a>
    <span class="author">もか</span>
    <time datetime="2004-04-18T02:14:32">2004年04月18日 02:14</time></h1>
    <div class="body">&gt;Winampをインストールすると.plsはWinamp PlayListになってしまう．困ったものだ．<br>*.mac<br>「MacPaint Image」という画像形式の拡張子として、QuickTimeなどに関連付けられます。<br>*.ppa<br>「Microsoft PowerPoint アドイン」としてPowerPointに関連付けられます。<br>それに、PPAの拡張子で、p2aというのをみたことがあったような気がします。<br><br>とまあ、拡張子はマクロ全般ややこしいことになっております。<br>WSH系の場合、WScript.exe/CScript用なのか、ブラウザ(ウェブ)用なのか、特定アプリ用なのか、中身を確認しないとサッパリ分からないというほうが、問題な気がします。<br>.tar.bz2みたいに、.js.semacとかみたいに二重拡張子という手もあるんですが、うーん。それだと、サクラエディタのタイプ別設定が使えなくなってしまう。<br></div></section>
    </li></ul></li><li><section><h1 id=3924>
    <span class="no">[3924]</span>
    <a class="thread-title" href="#3924">RE3: WSH</a>
    <span class="author">みく</span>
    <time datetime="2005-04-19T18:46:48">2005年04月19日 18:46</time></h1>
    <div class="body"><br>喋々遅い思いつき。<br><br>Perl: .pl --&gt; .pls<br>Pyhton: .py --&gt; .pys<br><br>という規則性！があることから、<br><br>//ここで &gt;&gt;dev:3532 形式の検索<br>if( _tcslen( FileExt ) == 2 ){  //FileExt="pl"とする<br>  _tcscat( FileExt, _T("s") );<br>  //ここでさらに &gt;&gt;dev:3532 形式の検索<br>}<br><br>のようにすると、すべてのスクリプトエンジンが見つかる気がする。<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></body></html>